package com.jpro.framework.quartz.client.vo;

import com.jpro.framework.quartz.client.constant.ScheduleTypeEnum;
import lombok.Data;

/**
 * 新增job实体
 */
@Data
public class JobInfo {

    /**
     * 任务ID
     * 非必填，填了为修改调度任务
     */
    private Integer id;
    /**
     * 任务执行CRON表达式
     * 必填
     */
    private String jobCron;
    /**
     * 执行器，任务Handler名称
     * 配合@Xxljob注解使用
     * 不可修改
     * 必填
     */
    private String executorHandler;
    /**
     * 执行器，任务参数
     * 执行时自动带上该参数
     * 非必填
     */
    private String executorParam;

    /**
     * 阻塞策略
     * SERIAL_EXECUTION 单机串行
     * COVER_EARLY 覆盖之前的调度
     * DISCARD_LATER 丢弃后续调度
     * 默认：SERIAL_EXECUTION 单机串行
     * 非必填
     */
    private String executorBlockStrategyEnum;

    /**
     * - 路由策略：当执行器集群部署时，提供丰富的路由策略，包括；
     * FIRST（第一个）：固定选择第一个机器；
     * LAST（最后一个）：固定选择最后一个机器；
     * ROUND（轮询）：；
     * RANDOM（随机）：随机选择在线的机器；
     * CONSISTENT_HASH（一致性HASH）：每个任务按照Hash算法固定选择某一台机器，且所有任务均匀散列在不同机器上。
     * LEAST_FREQUENTLY_USED（最不经常使用）：使用频率最低的机器优先被选举；
     * LEAST_RECENTLY_USED（最近最久未使用）：最久未使用的机器优先被选举；
     * FAILOVER（故障转移）：按照顺序依次进行心跳检测，第一个心跳检测成功的机器选定为目标执行器并发起调度；
     * BUSYOVER（忙碌转移）：按照顺序依次进行空闲检测，第一个空闲检测成功的机器选定为目标执行器并发起调度；
     * SHARDING_BROADCAST(分片广播)：广播触发对应集群中所有机器执行一次任务，同时系统自动传递分片参数；可根据分片参数开发分片任务；
     * 默认选择第一个
     * 非必填
     */
    private String executorRouteStrategyEnum;

    /**
     * 是否允许相同的执行器任务名称
     * 默认允许
     */
    private Boolean repJobHandler = true;
    private ScheduleTypeEnum scheduleType;
    private String author;
    private String jobDesc;
    private Integer triggerStatus;


}
